<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
</head>
<body>
    1.function.prototype.bind(obj);
    * 作用： 将函数内的this绑定为obj，并将函数返回
    2.面试题：区别bind()与call()和apply()?
     *都能指定函数中的this
     * call()/apply()是立即调用函数
     * bind()是将函数返回
     <script>
         var obj = {
             username :'kobe',
             age:'37'
         }
         
    
       /*
       function foo(data){
             console.log(this);
         }
        foo()  指向window
        foo.call(obj) 指向了对象
         foo.apply(obj) 指向了对象
       */ 
       //传入参数的形式
       function foo(data){
             console.log(this,data);
         }
         //foo.call(obj,33)  //直接从第二个参数开始传入，依次传入
         //foo.apply(obj,33) //报错了
        // foo.apply(obj,[33]) //数组形式就是对的了 第二个参数必须是数组，传入放在数组里边
        //bind的特点：绑定完this不会立即调用当前的函数，而是将函数返回
        // bind传参的形式和call一样
        // foo.bind(obj) //没有打印
        /*
            返回函数
             var bar = foo.bind(obj)
         console.log(bar) 
          bar()//调用
         */
        foo.bind(obj,44)()

        
     </script>
    
</body>
</html>